#pragma once

#include "../Component.h"

#include <functional>
#include <vector>

class Blade : public Component
{
public:
	Blade();
	virtual ~Blade();

	void registerCutAirCallback(std::function<void(const CharacterPtr &, const RoomPtr &)> &&callback);
	void cutAir(const CharacterPtr &character, const RoomPtr &room);

	void registerCutTargetCallback(std::function<void(const CharacterPtr &, const CharacterPtr &, const RoomPtr &)> &&callback);
	void cutTarget(const CharacterPtr &character, const CharacterPtr &target, const RoomPtr &room);

private:
	std::vector< std::function<void(const CharacterPtr &, const RoomPtr &)> > cutAirCallbacks;
	std::vector< std::function<void(const CharacterPtr &, const CharacterPtr &, const RoomPtr &)> > cutTargetCallbacks;
};
